import Vue from 'vue'
import store from '../../../store'
import lzsqlite from './sqlite.js'
// 生成全局唯一guid字符串
import lzguid from './guid.js'
// 生成全局唯一guid字符串
import lzVoice from './voice.js'
//webSocket服务器
import config from '../../../static/js/config/config.js'
let webSocket_svr=config.webSocket_svr
//websoket
let SocketTask = null
//创建和关闭websocket  true为创建false为关闭
function lz_websoket(onoff) {
	let userId = JSON.parse(store.getters.userInfo).id
	return new Promise((reslove,reject)=>{
		if (onoff) {
			//先关闭上一个在连接
			try {
				SocketTask.close({success() {console.log('关闭websoket成功')}})
			} catch (e) {
				//TODO handle the exception
			}
			//创建一个
			// console.log(webSocket_svr + userId);
			SocketTask = uni.connectSocket({
				url: webSocket_svr + userId,
				success: function() {
					console.log('SocketTask通道建立连接'+userId)
				}
			});
			// Vue.prototype.$SocketTask=SocketTask 
			// reslove(SocketTask)
			SocketTask.onOpen(function(res) {
				console.log('SocketTask打开成功');
			});
			SocketTask.onMessage((res) => {
				let data=JSON.parse(res.data)
				console.log('全局接收Socket', data)
				//获取消息免打扰人列表判断是否需要提示音
				getStorageSyncFn(data)
				//判断当前消息是否量子发送的
				if(!data.secretKey){//不是量子发送的
					try{
						data.content=JSON.parse(decodeURI(data.content))
					}catch(e){
						//TODO handle the exception
					}
				}
				if(data.type=='system'){
					// data.content=JSON.parse(decodeURI(data.content))
				}else if(data.type=='user'){
					console.log('接收到的时间-------------',data.time)
					// data.content=JSON.parse(decodeURI(data.content))
					data.userInfo=JSON.stringify(data.userInfo)
					data.receiveInfo=JSON.stringify(data.receiveInfo)
					data.isSend=1//已发送
					data.isRead=0//0未读1已读
					data.isTop=0//0未置顶1已置顶
					data.isMsgShow=1//当前消息在消息列表中是否删除【不显示】默认为显示1  0不显示
					data.uuid=lzguid(32)
					//插入数据到本地数据库
					insertDataFn(data)
					uni.$emit('pages_IM_count',data)
					uni.$emit('pages_lz_chat',data)
					//设置tabbar角标
					setTabbarCorner()
				}
			})
			// 监听到websocket关闭
			SocketTask.onClose((res) => {
				console.log("监听到websocket关闭", onoff, "true不是我主动关闭的，false为我主动关闭")
				// lz_websoket(true)
				// uni.showModal({
				// 	title: '提示',
				// 	content: '聊天通道已关闭是否打开？',
				// 	success: function(res) {
				// 		if (res.confirm) {
				// 			lz_websoket(true)
				// 		} else if (res.cancel) {}
				// 	}
				// });
			})
		} else {
			try {
				SocketTask.close({
					success:function() {
						console.log('关闭websoket成功')
					},
					fail:function(err){
						console.log(err);
					}
				})
			} catch (e) {
				console.log(e);
				//TODO handle the exception
			}
		
		}
	})
}
//获取消息免打扰人列表判断是否需要提示音
function getStorageSyncFn(data){
	let list=[]
	try{
		list=uni.getStorageSync('msg_disturb_user_list')||[]
	}catch(e){
		//TODO handle the exception
		list=[]
	}
	if(!list.includes(data.userId)){
		lzVoice.lz_voice_Play()
	}
	
}
//插入数据到本地数据库
function insertDataFn(msg){
	lzsqlite.insertDataFn(msg).then(res=>{
		console.log(res);
	})
}
//设置tabbar角标
function setTabbarCorner(){
	let count=uni.getStorageSync('tabbarAllCount')||0
	count++
	uni.setStorageSync('tabbarAllCount',count);
	if(uni.getStorageSync('tabbarAllCount')!==0){
		uni.setTabBarBadge({
		  index: 3,
		  text: ''+count
		})
	}else{
		uni.removeTabBarBadge({index: 3})
	}
}

module.exports ={
	lz_websoket
}